// tongji.js
// const tableName = 'tongji';
const { QueryTypes } = require('sequelize');

const querystring = require('querystring');
module.exports = {
  tongji: async (ctx) => {
    // console.log('ctx', ctx);
    const ip = ctx.header['x-forwarded-for'];
    const queryObj = querystring.parse(ctx.url.split('?')[1]);
    const imgUrl = queryObj.i || '';
    const type = queryObj.t || '1'; // type 1:首页， 2：图标 3：搜索
    const time = new Date().getTime();
    // const url = ctx.url;
    // const type = ctx.url.split('?')[1]
    //   ? ctx.url.split('?')[1].split('=')[1]
    //   : ''; // type 1:首页， 2：图标 3：搜索
    const navigator = encodeURIComponent(JSON.stringify(ctx.header));
    let body;
    try {
      body = ctx.sequelize.query(
        `INSERT INTO tongji (type,ip,url,navigator,time) values('${type}','${ip}','${imgUrl}','${navigator}','${time}')`,
        // `SELECT * FROM tongji t `,
        {
          // 用于记录查询的函数(或false)
          // 将调用发送到服务器的每个SQL查询.
          // logging: console.log,
          timestamps: false,
          // 如果plain为true,则sequelize将仅返回结果集的第一条记录.
          // 如果是false,它将返回所有记录.
          plain: false,

          // 如果你没有查询的模型定义,请将此项设置为true.
          raw: false,

          // 你正在执行的查询类型. 查询类型会影响结果在传回之前的格式.
          type: QueryTypes.INSERT,
        }
      );
      // ctx.sequelize.close();
    } catch (error) {
      body = '';
    }
    return body;
  },
  gettongjiList: async (ctx) => {
    let body;
    try {
      body = ctx.sequelize.query(`SELECT * FROM tongji `, {
        // 用于记录查询的函数(或false)
        // 将调用发送到服务器的每个SQL查询.
        // logging: console.log,
        timestamps: false,

        // 如果plain为true,则sequelize将仅返回结果集的第一条记录.
        // 如果是false,它将返回所有记录.
        plain: false,

        // 如果你没有查询的模型定义,请将此项设置为true.
        raw: false,

        // 你正在执行的查询类型. 查询类型会影响结果在传回之前的格式.
        type: QueryTypes.SELECT,
      });
      // ctx.sequelize.close();
    } catch (error) {
      body = '';
    }
    return body;
  },
  gettongjiTypeList: async (ctx) => {
    const queryObj = querystring.parse(ctx.url.split('?')[1]);
    // const imgUrl = queryObj.i || '';
    const type = queryObj.t || ''; // type 1:首页， 2：图标 3：搜索
    let body;
    try {
      body = ctx.sequelize.query(
        `SELECT * FROM tongji where "type" ='${type}'`,
        {
          // 用于记录查询的函数(或false)
          // 将调用发送到服务器的每个SQL查询.
          // logging: console.log,
          timestamps: false,
          // 如果plain为true,则sequelize将仅返回结果集的第一条记录.
          // 如果是false,它将返回所有记录.
          plain: false,
          // 如果你没有查询的模型定义,请将此项设置为true.
          raw: false,
          // 你正在执行的查询类型. 查询类型会影响结果在传回之前的格式.
          type: QueryTypes.SELECT,
        }
      );
      // ctx.sequelize.close();
    } catch (error) {
      body = '';
    }
    return body;
  },
  tongjiTotal: async (ctx) => {
    // const queryObj = querystring.parse(ctx.url.split('?')[1]);
    // const imgUrl = queryObj.i || '';
    // const type = queryObj.t || ''; // type 1:首页， 2：图标 3：搜索
    let body;
    try {
      body = ctx.sequelize.query(
        `SELECT count(*) num,type  FROM tongji where "type" !='' group by type `,
        {
          // 用于记录查询的函数(或false)
          // 将调用发送到服务器的每个SQL查询.
          // logging: console.log,
          timestamps: false,
          // 如果plain为true,则sequelize将仅返回结果集的第一条记录.
          // 如果是false,它将返回所有记录.
          plain: false,
          // 如果你没有查询的模型定义,请将此项设置为true.
          raw: false,
          // 你正在执行的查询类型. 查询类型会影响结果在传回之前的格式.
          type: QueryTypes.SELECT,
        }
      );
      // ctx.sequelize.close();
    } catch (error) {
      body = '';
    }
    return body;
  },
};
